package com.f21.f21assessoria.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.concurrent.LinkedBlockingDeque;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.model.SelectItem;

import org.apache.commons.collections.list.TreeList;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Autowired;

import com.f21.f21assessoria.converter.ConverterPerfis;
import com.f21.f21assessoria.enums.DiasDaSemana;
import com.f21.f21assessoria.model.ergonometria.AgrupamentoAtividade;
import com.f21.f21assessoria.model.ergonometria.Atividade;
import com.f21.f21assessoria.model.ergonometria.FrequenciaCardiacaTreino;
import com.f21.f21assessoria.model.ergonometria.Treinamento;
import com.f21.f21assessoria.model.ergonometria.Treino;
import com.f21.f21assessoria.model.ergonometria.VelocidadeTreino;
import com.f21.f21assessoria.model.ergonometria.cadastro.TipoTreino;
import com.f21.f21assessoria.service.CadastroService;
import com.f21.f21assessoria.service.ErgonometriaServ;
import com.f21.f21assessoria.util.JsfUtil;

//@ManagedBean
public class ErgonometriaController implements Serializable {

	private static final long serialVersionUID = 1L;

	@Autowired
	private ErgonometriaServ serv;
	@Autowired
	private CadastroService cadastro;

	private Treinamento treinamento;

	public ErgonometriaController() {
		Treinamento treinamento = (Treinamento) JsfUtil
				.getSessionValue("treinamento");
		if (treinamento == null) {
			// this.treinamento = serv.criarTreinamento();
		} else {
			this.treinamento = treinamento;
			JsfUtil.removeFromSession("treinamento");
		}
	}

	@PostConstruct
	public void init() {
		if (treinamento == null)
			this.treinamento = serv.criarTreinamento();
	}

	public Treinamento getTreinamento() {
		return treinamento;
	}

	public void setServ(ErgonometriaServ serv) {
		this.serv = serv;

	}

	public List<FrequenciaCardiacaTreino> getListFreq() {
		List<FrequenciaCardiacaTreino> lista = new ArrayList<FrequenciaCardiacaTreino>(
				treinamento.getListFreq());
		Collections.sort(lista);
		return lista;
	}

	public List<VelocidadeTreino> getListVelocTreino() {
		List<VelocidadeTreino> lista = new ArrayList<VelocidadeTreino>(
				treinamento.getListVelocTreino());
		Collections.sort(lista);
		return lista;
	}

	public List<Treino> getListTreinos() {
		List<Treino> lista = new ArrayList<Treino>(treinamento.getListTreino());
		Collections.sort(lista);
		return lista;
	}

	public void addTreino() {
		serv.addTreino(this.treinamento);
	}

	public String idadeEvent() {
		return this.treinamento.getListFreq().iterator().next()
				.getFrequeciaCardiaca();

	}

	public Set<TipoTreino> getTodosTipoTreinos() {
		return cadastro.getTodosTipoTreinos();
	}

	public SelectItem[] getListDiasSemanas() {
		return ConverterPerfis.getListaValores(DiasDaSemana.values());
	}

	public void addAgruamento(Treino treino) {
		serv.addAgrupamento(treino);
	}
	public void excluirtAtv(AgrupamentoAtividade agrup, Atividade ativ ){
		agrup.getListAtividade().remove(ativ);
		
	}
	public void excluirtAtv(AgrupamentoAtividade agrup, int idx ){
		agrup.getListAtividade().remove(idx);
		
	}

}
